#include <stdio.h>  
#include <fcntl.h>  
#include <unistd.h>  
  
int main() {  
    int fd = open("output.txt", O_WRONLY | O_CREAT | O_APPEND, 0644); // 使用 O_APPEND 标志 追加
    //int fd = open("output.txt", O_WRONLY | O_CREAT, 0644);  覆盖
    if (fd == -1) {  
        perror("open");  
        return 1;  
    }  
  
    // 重定向 stdout 到文件  
    if (dup2(fd, STDOUT_FILENO) == -1) {  
        perror("dup2");  
        return 1;  
    }  
  
    // 从现在开始，printf 的输出将被写入到 "output.txt"  
    printf("This text will be written to output.txt instead of the console.\n");  
  
    // 恢复原来的 stdout（可选）  
    // 注意：这需要你在调用 dup2 之前保存原来的 stdout 文件描述符  
  
    close(fd); // 关闭原始的文件描述符，现在 stdout 已经是它的一个副本了  
    return 0;  
}